<?php
// +----------------------------
// | Created by PhpStorm
// +----------------------------
// | Author: YnnSon
// +----------------------------
namespace app\api\model;

use app\lib\enum\SubscribeEnum;

class Date extends BaseModel
{
    /**
     * @Desc 获取日期中的月(如:7月)
     *
     * @param $value
     * @param $data
     *
     * @return false|string
     */
    protected function getMonthAttr($value, $data)
    {
        return date('n月', strtotime($data['date']));
    }

    /**
     * @Desc 获取日期中的日(如:20)
     *
     * @param $value
     * @param $data
     *
     * @return false|string
     */
    protected function getDayAttr($value, $data)
    {
        return date('d', strtotime($data['date']));
    }

    /**
     * @Desc 获取7天内日期
     * @return bool|false|\PDOStatement|string|\think\Collection
     */
    public static function getDate()
    {
        // return;
        // $users = [
        //     33, // 隆程
        //     35, // 安顺
        //     42, // 众普
        //     31, // 捷安
        //     3888, // 宏隆
        //     10270, // 捷远
        //     45, // 捷远
        //     57, // 捷程
        //     28, // 罗雨晴
        //     27, // 小卷毛先森
        //     5507, // 崔
        // ];
        // $user = Token::getUidFromCache();
        $today_week = (new self())->where('date_date', '=', date('Y-m-d'))->value('date_week'); // 今天是周几
        $tomorrow_status = (new self())->where('date_date', '=', date('Y-m-d', strtotime('+1 day')))->value('status'); // 明天的状态
        $day_after_tomorrow_status = (new self())->where('date_date', '=', date('Y-m-d', strtotime('+2 day')))->value('status'); // 后天的状态
        $open_days = SubscribeEnum::TWO_DAYS;
        // 今天是周五并且明后天周六周日不是休息日调休时, 开放三天预约
        if (5 == $today_week && 2 != $tomorrow_status && 2 != $day_after_tomorrow_status) {
            $open_days = SubscribeEnum::THREE_DAYS;
            // 周天只能预约周一
        } elseif (0 == $today_week) {
            $open_days = SubscribeEnum::ONE_DAY;
        }
        $field = 'id, date_date date, date_week week, status';
        $date = (new self())->field($field)->whereTime('date_date', '>', 'today')->limit(7)->select(); // 明天起的7天
        // if (in_array($user, $users)) {
        //     $date = (new self())->field($field)->whereTime('date_date', '>=', 'today')->limit(7)->select(); // 明天起的7天
        //     $open_days = SubscribeEnum::THREE_DAYS;
        // }
        // 春节期间(2.10-2.17)只能预约18,19两天, 之后恢复正常
        $nowTime = time();
        if (strtotime('2021-02-10') < $nowTime && $nowTime < strtotime('2021-02-18')) {
            $open_days = SubscribeEnum::TWO_DAYS; // 开放两天
            $date = (new self())->field($field)->whereTime('date_date', '>=', '2021-02-18')->limit(7)->select(); // 今天起的7天(不包括节假日)
        }
        $list = $date->append(['month', 'day'])->toArray();
        $i = 0;
        // 设置哪天可预约
        while ($i < $open_days) {
            $list[$i]['is_open'] = 1;
            $i++;
        }
        return $list;
    }
}